package com.javastudy.liuhouse.lambda;

import org.junit.Test;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
 * Lambda表达式的使用
 */
public class LambdaUse {
    public static void main(String[] args) {
        //定义一个字符串数组
        String[] arr = new String[]{"apple" , "Orange" , "banana" , "Lemon"};
        //请使用忽略大小写排序,并且修改为lambda表达式
        Arrays.sort(arr , new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
        System.out.println(String.join(", " , arr));
    }


    @Test
    public void TestLambda(){
        //定义一个字符串数组
        String[] arr = new String[]{"apple" , "Orange" , "banana" , "Lemon"};
        //使用lambda表达式进行排序
        //如果只有一行 return xxx的代码  完全可以使用更加简单的写法
        //其实javascript 就是跟这个学的
        Arrays.sort(arr ,(s1 , s2)-> s1.compareTo(s2));

        System.out.println(String.join(", " , arr));
    }
    //--------Lambda表达式的更多示例

    //1.使用Runnable接口
    @Test
    public void testRunnable(){
        Runnable runnable = () -> System.out.println("Hello Lambda");
//        runnable.run();
        new Thread(runnable).start();
    }


    //2.使用Comparator接口
    @Test
    public void testCompare(){
        //创建一个数组
        List<String> names = Arrays.asList("Bob", "Alice", "Charlie");
        //按照字母顺序排序
        names.sort((s1 , s2) -> s1.compareTo(s2));
        System.out.println(names);
    }

    //3.使用Consumer接口
    @Test
    public void testConsumer(){
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        numbers.forEach(n -> System.out.println(n));//遍历并打印每个元素
    }



}
